VC|编辑框中的文本读写、查找、替换操作

1 添加编辑框(Rich Edit)

1.1 编辑框ID:IDC_textbox

1.2 编辑框关连的control变量:m_textblock

2 变量声明和定义

CString str;

int nStart, nEnd;

3 得到编辑框文本的方式

有8种访问对话框控件的方式,下面是对这些方式的一个总结:

GetDlgItem()->Get(Set)WindowText()

GetDlgItemText()/SetDlgItemText()

GetDlgItemInt()/SetDlgItemInt()

将控件和普通变量相关联,用UpdateData();交换数据

将控件和控件变量相关联

SendMessage()

SendDlgItemMessage()

GetSelText()

如:

3.1

GetDlgItem(IDC_textbox)->GetWindowText(str);

//GetDlgItem()返回的是一个CEdit *指针

3.2

m_textblock.GetSel(nStart, nEnd);

str = m_textblock.GetSelText();

4 文本插入

4.1 在编辑框全部文本的前后插入文本

4.1.1

m_textblock.SetSel(0, 0);

m_textblock.ReplaceSel("

");

m_textblock.SetSel(-1, -1);

m_textblock.ReplaceSel("

");

4.1.2

m_textblock.SetSel(0, -1);

str = m_textblock.GetSelText();

str = "

" + str + "
";

GetDlgItem(IDC_textbox)->SetWindowText(str);

4.1.3

GetDlgItem(IDC_textbox)->GetWindowText(str);

str = "

" + str + "
";

GetDlgItem(IDC_textbox)->SetWindowText(str);

4.2 在编辑框文本的中间插入文本(或换行)

str = "\n\r";

m_textblock.ReplaceSel(str);

5 文本替换

任务:如果编辑框没有选择文本,则在全部文本的前面加上

,在全部文本的后面加上
。如果编辑框有选择文本,则在选择的文本前后操作。

m_textblock.GetSel(nStart, nEnd);

if(nStart == nEnd)

//如果nStart和nEnd相等,表明光标处于某个位置(直观来看就是光标在闪动);

{

m_textblock.SetSel(0, -1);

str = m_textblock.GetSelText();

str = "

" + str + "
";

GetDlgItem(IDC_textbox)->SetWindowText(str);

}

else

{

str = m_textblock.GetSelText();

str = "

" + str + "
";

m_textblock.ReplaceSel(str);

}

也可以利用CString类的Relace()方法做文本替换:

CString strtxt,strold,strnew;

GetDlgItem(IDC_textbox)->GetWindowText(strtxt);

GetDlgItem(IDC_title)->GetWindowText(strold);

GetDlgItem(IDC_new)->GetWindowText(strnew);

strtxt.Replace(strold,strnew);

GetDlgItem(IDC_textbox)->SetWindowText(strtxt);

6 编辑框内文本的全选、复制、剪切、粘贴、清空、回退操作

m_textblock.SetSel(0, -1);

m_textblock.Copy();

m_textblock.Cut();

m_textblock.Paste();

m_textblock.Clear();

CEdit* edit1 = (CEdit*)GetDlgItem(IDC_textbox);

edit1->SetWindowText("");

m_textblock.Undo();

m_textblock.SetFocus();

7 将光标停置于编辑框中默认文本的特定位置

如编辑框设置了如下默认文本:

hi,

Very happy to write to you.

Attached please find!

Any questions, please don't hesitate to let me know.

You're early reply will be highly appreciated.

Best Regards

Yours Sincerely

想让光标停靠在第三行空白处:

m_body.SetSel(45,45);

8 编辑框中文本的查找操作

CString blocks,finds;

int start,end,lengths,lengths2, num;

start =0, end = 0, lengths = 0, lengths2 = 0, num =0;

GetDlgItem(IDC_textbox)->GetWindowText(blocks);

GetDlgItem(IDC_title)->GetWindowText(finds);

lengths = finds.GetLength();

start = blocks.Find(finds);

while (start >= 0)

{

lengths2 = blocks.GetLength();

start = blocks.Find(finds);

//从第start +1开始,如是在第一个字符找到,则start = 0;

if((start+lengths) > (lengths2 - start+lengths))

{

break;

}

blocks = blocks.Mid(start+lengths, lengths2-start-lengths);

num++;

}

char str3[125];

itoa(num,str3,10);

CString textnum = str3;

textnum = "找到:"+ textnum + "个!";

GetDlgItem(IDC_new)->SetWindowText(textnum);

-End-

本页共115段,2887个字符,3744 Byte(字节)